package ufcg.edu.br.bigu;

import java.util.ArrayList;
import java.util.List;

public class ListaCaronas {

	private List<Carona> caronasCadastradas;

	public List<Carona> getCaronasCadastradas() {
		return caronasCadastradas;
	}

	public void setCaronasCadastradas(List<Carona> caronasCadastradas) {
		this.caronasCadastradas = caronasCadastradas;
	}

	public ListaCaronas(){
		this.caronasCadastradas = new ArrayList<Carona>();
	}

	public String add(Carona c) {
		
		String idCarona = this.gerarIdCarona(c);
		c.setIdCarona(idCarona);
		caronasCadastradas.add(c);
		
		return c.getIdCarona();
		
	}

	private String gerarIdCarona(Carona c) {
		int nextId = caronasCadastradas.size() + 1;
		
		StringBuffer retorno = new StringBuffer();
		retorno.append("carona");
		retorno.append(nextId);
		retorno.append("ID");
		
		return retorno.toString();
	}



	public String localizarCarona(String idSessao, String origem,
			String destino) {

		StringBuffer retorno = new StringBuffer();
		retorno.append("{");
		
		int i = 0;
		for(Carona c: caronasCadastradas){
			if ((c.getDestino().equals(destino) && c.getOrigem().equals(origem) && c.getIdSessao().equals(idSessao))
					|| (c.getDestino().equals(destino) && Constantes.STRING_VAZIA.equals(origem) && c.getIdSessao().equals(idSessao))
					|| (Constantes.STRING_VAZIA.equals(destino) && c.getOrigem().equals(origem) && c.getIdSessao().equals(idSessao))
					|| (Constantes.STRING_VAZIA.equals(origem) && Constantes.STRING_VAZIA.equals(destino) && c.getIdSessao().equals(idSessao))){
				if(i != 0){
					retorno.append(",");
					
				}
				retorno.append(c.getIdCarona());
			
				i++;
				
			}
		}
		retorno.append("}");
		
		return retorno.toString();
	}

	public Carona getCaronaComId(String idCarona) {
		for(Carona c: caronasCadastradas){
			if (c.getIdCarona().equals(idCarona)){
				return c;
			}
		}
		return null;
	}

	public Carona getCaronaComSolicitacao(String idSolicitacao, String idSessao) {
		
		for (Carona c: caronasCadastradas){
			if(c.contemSolicitacao(idSolicitacao) && c.getIdSessao().equals(idSessao)){
				return c;
			}
		}
		
		return null;
	}

	
}
